package mgoDB

// mongodb 仓储接口
type IMgoRepository interface {
	// 插入单个
	// entity  结构体
	Insert(entity interface{}) (count int, err error)
	// 插入多个
	// entity 结构体切片
	InsertMany(entity []interface{}) (count int, err error)
	// 删除单个
	// id 主键
	Delete(id interface{}) (count int, err error)
	// 删除多个
	// ids 主键切片
	DeleteMany(ids ...interface{}) (count int, err error)
	// filterKey   过滤的字段名称[与标签一致]
	// filterValue 过滤的字段值
	// entity      更新的结构体
	Update(filterKey string, filterValue interface{}, entity interface{}) (count int, err error)
	// 单条件查询单个[id]
	// filterValue 过滤的字段值
	// result      查询的结果（指针）
	FindById(filterValue interface{}, result interface{}) (err error)
	// 单条件查询
	// filterKey   过滤的字段名称[与标签一致]
	// filterValue 过滤的字段值
	// result      查询的结果
	Find(filterKey string, filterValue interface{}, result interface{}) (err error)
	// 多条件查询
	// filterMap   过滤的条件集合[与标签一致]
	// result      查询的结果
	FindMany(filterMap map[string]interface{}, result interface{}) (err error)
	// 获取总数
	// filterMap   过滤的条件集合
	FindCount(filterMap map[string]interface{}) (count int64, err error)
	// 查询分页
	// filterMap 查询条件[与标签一致]
	// pageIndex  页数（从1开始）
	// size 获取个数
	// sortName 排序字段
	// desc 是否倒序(1为正序，-1为倒序) 1 为最初时间读取 ， -1 为最新时间读取
	// result 查询结果(结构体切片)
	// isTotal 总数
	FindPage(filterMap map[string]interface{}, pageIndex, size int64, sortName string, desc int, result interface{}, isTotal bool) (totalCount int64, err error)
}
